package com.daily.DailyStudy.动态代理.CGLIB动态代理;


import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

public class MyInterceptor implements MethodInterceptor {

    private Object target;

    public MyInterceptor(Object target){
        this.target=target;
    }

    /**
     * @Param o 生成的代理类实例
     * @Param method 被代理对象方法的引用
     * @Param objects 方法参数值数组
     * @Param methodProxy 代理类对方法的引用
     *
     * */
    @Override
    public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
        System.out.println("方法之前："+System.currentTimeMillis());
        Object ret = methodProxy.invoke(target,args);
        String user = String.valueOf(args[0]);
        System.out.println("参数项第一个值："+user);
        //可以根据获取到的值写业务代码

        System.out.println("方法之后："+System.currentTimeMillis());

        return ret;
    }
}
